home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / tool / vdgear / src / snd.c < prev    next >
Text File  |  1994-11-16  |  2KB  |  101 lines

  1. /*
  2.  *    VIDEO・GEAR
  3.  *    "snd.c"
  4.  *    by Good-Chy
  5.  */
  6.  
  7. #include    "video.h"
  8.  
  9. int    cmp_str(char *s1, char *s2)    /* s1とs2を大文字,小文字の区別なしに比較 */
  10.     {                    /* 正しい:0   間違い:-1 を返す */
  11.     int    i,len;
  12.     char    c1,c2;
  13.  
  14.     len = strlen(s1);
  15.  
  16.     for (i=0 ; i<len ; i++)
  17.         {
  18.         c1 = *(s1+i);
  19.         c2 = *(s2+i);
  20.         if (c1>0x60)    { c1 -= 0x20; }
  21.         if (c2>0x60)    { c2 -= 0x20; }
  22.  
  23.         if (c1 != c2)    { return (-1); }
  24.         }
  25.     return (0);
  26.     }
  27.  
  28. void    snd_init()
  29.     {
  30.     SND_elevol_init();
  31.     SND_elevol_mute(1);
  32.     SND_elevol_set(1,127,127);
  33.     }
  34.  
  35. void    vol_set(int stp)
  36.     {
  37.     int    vol;
  38.  
  39.     max_vol = data[stp].mixing.vol[1]*4;
  40.  
  41.     vol = data[stp].mixing.vol[0];        /* line */
  42.     if (vol > 0)
  43.         { SND_elevol_set(0,vol*4,vol*4); }
  44.  
  45.     vol = data[stp].mixing.vol[1];        /* cd */
  46.     if (vol > 0)
  47.         { SND_elevol_set(1,vol*4,vol*4); }
  48.  
  49.     vol = data[stp].mixing.vol[2];        /* mic */
  50.     if (vol > 0)
  51.         { SND_elevol_set(2,vol*4,vol*4); }
  52.     }
  53.  
  54. char    *snd_load(char *file_name)
  55.     {
  56.     FILE    *fp_s;
  57.     int    top, size,len;
  58.     char    *bp;
  59.  
  60.     setmos(82);
  61.     err = 0;
  62.  
  63.     len = strlen(file_name);
  64.     if (len<5)
  65.         { err = 3; setmos(81); return NULL; }
  66.  
  67.     if (cmp_str((file_name+len-4),".SND") == -1)
  68.         { err = 3; setmos(81); return NULL; }
  69.  
  70.     if ((fp_s = fopen(file_name, "rb")) == NULL)    /* ファイルオープン */
  71.         { err = 1; setmos(81); return NULL; }
  72.  
  73.     rewind(fp_s);                        /* ファイルの大きさ */
  74.     top = ftell(fp_s);
  75.     fseek(fp_s,0l,SEEK_END);
  76.     size = ftell(fp_s) - top + 1;
  77.     rewind(fp_s);
  78.  
  79.     if (NULL == (bp = malloc(size)))
  80.         { err = 2; setmos(81); return NULL; }
  81.  
  82.     fread(bp, 1, size, fp_s);
  83.  
  84.     fclose(fp_s);
  85.     setmos(81);
  86.  
  87.     return(bp);
  88.     }
  89.  
  90. void    snd_play(char *bp,int vol)
  91.     {
  92.     int    note;
  93.  
  94.     SND_pcm_mode_set(1);
  95.     SND_pan_set(71,64);
  96.     SND_pitch_change(71,0);
  97.     SND_volume_change(71,vol*4);
  98.     note = bp[28] & 0x7f;
  99.     SND_pcm_play(71,note,vol*4,bp);
  100.     }
  101.